
歡迎來到 30 天的 TypeScript 挑戰之旅!如果你曾經在開發中因為 TypeScript 錯誤而頭疼,那麼這個系列就是為你準備的。在接下來的 30 天裡,我將每天為大家出一道 TypeScript 的實戰問題,這些問題源自我開發中的實際挑戰,我們將一起深度探索,解決問題,並提升編碼能力。
TypeScript 是現代 JavaScript 開發中不可或缺的工具,讓我們的程式碼更嚴謹、能做到型別安全而且更具可讀性,並降低了錯誤的發生機率。不過,即便有了這樣的工具,我們仍然不可避免地會遇到各種錯誤和挑戰。所以我希望通過每天的「實戰演練」,帶領大家一步步攻克這些難題,最終掌握 TypeScript 的精髓。
每日一題:
思路解法:
學習目標:
我們的終極目標,是能夠輕鬆面對 TypeScript 的錯誤處理,並能夠舉一反三,在工作中運用學到的知識。
希望大家能享受這 30 天的學習過程,並一起成為更好的 TypeScript 開發者!
那我們開始吧!
function addVAT(price, vat = 0.2) {
	return price * (1 + vat);
}
const thisErros = addVAT(20, 'this does not work')
const boom = addVAT('not a string!');
聰明的小夥伴應該看出問題了吧?
function addVAT(
price, vat = 0.2) {
return price * (1 + vat);
}
const thisErros = addVAT(20,'this does not work')const boom = addVAT('not a string!');
Parameter 'price' implicitly has an 'any' type.
Argument of type 'string' is not assignable to parameter of type 'number'.
price的型別沒有被明確定義string 型別的值給一個預期接收 number 型別的參數。具體來說,函數 addVAT 預期 price 參數是 number,但是傳遞了字串 'not a string!',這會導致錯誤price 和 vat 的型別明確定義為 number
number。傳入 string 會觸發 TypeScript 錯誤。function addVAT(price: number, vat: number = 0.2): number {
  return price * (1 + vat);
}
const validResult = addVAT(20); // 正確,返回 24
const invalidResult = addVAT(20, 0.1); // 正確,返回 22
// const thisError = addVAT(20, 'this does not work'); // 這行會報錯,因為 'this does not work' 是字串
// const boom = addVAT('not a string!'); // 這行會報錯,因為 'not a string!' 不是數字
演練網址:
TypeScript: TS Playground - An online editor for exploring TypeScript and JavaScript
any。